Nas distribuições recentes do Linux, o FreeCAD é geralmente fácil de construir, já que todas as dependências são geralmente fornecidas pelo gerenciador de pacotes. Envolve basicamente 3 etapas:
cmake
e compile com make
Abaixo, você encontrará explicações detalhadas de todo o processo, alguns build scripts e particularidades que você pode encontrar. Se você encontrar algo errado ou desatualizado no texto abaixo (as distribuições Linux mudam frequentemente), ou se você usa uma distribuição que não está listada, discuta o assunto em fórum, e ajude-nos a corrigi-lo.
Fluxo de trabalho geral para compilar o FreeCAD a partir do código-fonte. As dependências de terceiros devem estar no sistema, assim como o próprio código-fonte do FreeCAD. CMake configura o sistema para que com uma única instrução make todo o projeto seja compilado.
A melhor maneira de obter o código é clonar o repositório Git somente leitura Git. Para isso você precisa do programa git
que pode ser facilmente instalado na maioria das distribuições Linux. Também pode ser obtido no site oficial.
O Git pode ser instalado através do seguinte comando:
sudo apt install git
O comando a seguir colocará uma cópia da versão mais recente do código-fonte do FreeCAD em um novo diretório chamado freecad-source
.
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad-source
Para obter mais informações sobre como usar o Git e contribuir com código para o projeto, consulte Gerenciamento de código-fonte.
Para compilar o FreeCAD você deve instalar as dependências necessárias mencionadas em Bibliotecas de Terceiros; os pacotes que contêm essas dependências estão listados abaixo para diferentes distribuições Linux. Observe que os nomes e a disponibilidade das bibliotecas dependerão da sua distribuição específica; se sua distribuição for antiga, alguns pacotes podem estar indisponíveis ou ter um nome diferente. Neste caso, consulte a seção distribuições mais antigas e não convencionais abaixo.
Depois de instalar todas as dependências, prossiga para compilar o FreeCAD
Observe que o código-fonte do FreeCAD tem cerca de 500 MB; pode ser três vezes maior se você clonar o repositório Git com todo o seu histórico de modificações. Obter todas as dependências pode exigir o download de 500 MB ou mais de novos arquivos; quando esses arquivos são descompactados, eles podem exigir 1.500 MB ou mais de espaço. Esteja ciente também de que o processo de compilação pode gerar até 1.500 MB de arquivos adicionais à medida que o sistema copia e modifica todo o código-fonte. Portanto, certifique-se de ter espaço livre suficiente no disco rígido, pelo menos 4 GB, ao tentar compilar.
Em sistemas baseados no Debian (Debian, Ubuntu, Mint, etc.), é muito fácil instalar todas as dependências necessárias. A maioria das bibliotecas está disponível por meio do apt
ou do gerenciador de pacotes Synaptic.
Se você já instalou o FreeCAD a partir dos repositórios oficiais, poderá instalar suas dependências de compilação com esta única linha de código em um terminal:
sudo apt build-dep freecad
Alternativamente, substitua freecad
por freecad-daily
para instalar as dependências de construção para o branch de desenvolvimento principal. Você precisará ter os freecad-stable/freecad-daily PPAs adicionados às suas fontes de software.
Porém, se a versão do FreeCAD nos repositórios for antiga, as dependências podem ser erradas para compilar uma versão recente do FreeCAD. Portanto, verifique se você instalou os seguintes pacotes.
Esses pacotes são essenciais para o sucesso de qualquer tipo de compilação:
build-essential
, instala os compiladores C e C++, as bibliotecas de desenvolvimento C e o programa make
.cmake
, ferramenta essencial para configurar a fonte do FreeCAD. Você também pode instalar cmake-gui
e cmake-curses-gui
para uma opção gráfica.libtool
, ferramentas essenciais para produzir bibliotecas compartilhadas.lsb-release
, o utilitário de relatório base padrão normalmente já está instalado em um sistema Debian e permite distinguir programaticamente entre uma instalação Debian pura ou uma variante, como Ubuntu ou Linux Mint. Não remova este pacote, pois muitos outros pacotes do sistema podem depender dele.A compilação do FreeCAD usa a linguagem Python e também é usada em tempo de execução como linguagem de script. Se você estiver usando uma distribuição baseada em Debian, o interpretador Python normalmente já está instalado.
python3
swig
, a ferramenta que cria interfaces entre o código C++ e Python.Verifique se você tem o Python 3 instalado. Python 2 ficou obsoleto em 2019, portanto, novos desenvolvimentos no FreeCAD não são testados com esta versão da linguagem.
As bibliotecas Boost precisam ser instaladas:
libboost-dev
libboost-date-time-dev
libboost-filesystem-dev
libboost-graph-dev
libboost-iostreams-dev
libboost-program-options-dev
libboost-python-dev
libboost-regex-dev
libboost-serialization-dev
libboost-thread-dev
As bibliotecas Coin precisam ser instaladas:
libcoin80-dev
, para Debian Jessie, Stretch, Ubuntu 16.04 a 18.10, oulibcoin-dev
, para Debian Buster, Ubuntu 19.04 e mais recente, bem como para Ubuntu 18.04/18.10 com os freecad-stable/freecad-daily PPAs adicionados para suas fontes de software.Diversas bibliotecas que tratam de matemática, superfícies trianguladas, classificação, malhas, visão computacional, projeções cartográficas, visualização 3D, sistema X11 Window, análise XML e leitura de arquivos Zip:
libeigen3-dev
libgts-bin
libgts-dev
libkdtree++-dev
libmedc-dev
libopencv-dev
or libcv-dev
libproj-dev
libvtk9-dev
, libvtk8-dev
, libvtk7-dev
or libvtk6-dev
libx11-dev
libxerces-c-dev
libyaml-cpp-dev
libzipios++-dev
Isso não é recomendado para instalações mais recentes, pois tanto o Python 2 quanto o Qt4 são obsoletos. A partir da versão 0.20, o FreeCAD não os suporta mais.
Para compilar o FreeCAD para Debian Jessie, Stretch, Ubuntu 16.04, usando Python 2 e Qt4, instale as seguintes dependências.
qt4-dev-tools
libqt4-dev
libqt4-opengl-dev
libqtwebkit-dev
libshiboken-dev
libpyside-dev
pyside-tools
python-dev
python-matplotlib
python-pivy
python-ply
python-pyside
Para compilar o FreeCAD para Debian Buster, Ubuntu 19.04 e mais recente, bem como Ubuntu 18.04/18.10 com os freecad-stable/freecad-daily PPAs adicionados às suas fontes de software, instale a seguinte dependência
qtbase5-dev
qttools5-dev
qt5-default
(if compiling 0.20 on a machine that still has Qt4)libqt5opengl5-dev
libqt5svg5-dev
qtwebengine5-dev
libqt5xmlpatterns5-dev
libqt5x11extras5-dev
libpyside2-dev
libshiboken2-dev
pyside2-tools
pyqt5-dev-tools
python3-dev
python3-matplotlib
python3-packaging
python3-pivy
python3-ply
python3-pyside2.qtcore
python3-pyside2.qtgui
python3-pyside2.qtsvg
python3-pyside2.qtwidgets
python3-pyside2.qtnetwork
python3-pyside2.qtwebengine
python3-pyside2.qtwebenginecore
python3-pyside2.qtwebenginewidgets
python3-pyside2.qtwebchannel
python3-pyside2uic
(not required on Ubuntu 20.04 and later)
O kernel OpenCascade é a principal biblioteca gráfica para criar formas 3D. Existe em uma versão oficial OCCT e em uma versão comunitária OCE. A versão comunitária não é mais recomendada, pois está desatualizada.
Para Debian Buster e Ubuntu 18.10 e mais recentes, bem como Ubuntu 18.04 com os freecad-stable/freecad-daily PPAs adicionados às suas fontes de software, instale os pacotes oficiais.
libocct*-dev
libocct-data-exchange-dev
libocct-draw-dev
libocct-foundation-dev
libocct-modeling-algorithms-dev
libocct-modeling-data-dev
libocct-ocaf-dev
libocct-visualization-dev
occt-draw
Para Debian Jessie, Stretch, Ubuntu 16.04 e mais recente, instale os pacotes da edição comunitária.
liboce*-dev
liboce-foundation-dev
liboce-modeling-dev
liboce-ocaf-dev
liboce-ocaf-lite-dev
liboce-visualization-dev
oce-draw
Você pode instalar as bibliotecas individualmente ou usando a expansão Asterisk. Troque occ
por oce
se desejar instalar as bibliotecas da comunidade.
sudo apt install libocct*-dev
Opcionalmente, você também pode instalar estes pacotes extras:
libsimage-dev
, para fazer com que o Coin suporte formatos de arquivo de imagem adicionais.doxygen
e libcoin-doc
(ou libcoin80-doc
para sistemas mais antigos), se você pretende gerar documentação de código-fonte.libspnav-dev
, para suporte a dispositivos de entrada 3D, como o 3Dconnexion "Space Navigator" ou "Space Pilot".checkinstall
, se você pretende registrar seus arquivos instalados no gerenciador de pacotes do seu sistema, para poder desinstalá-lo mais tarde.
Requer Pyside2 disponível no Debian buster e nos freecad-stable/freecad-daily PPAs.
sudo apt install cmake cmake-gui libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside2-dev libqt5opengl5-dev libqt5svg5-dev qtwebengine5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libshiboken2-dev libspnav-dev libvtk7-dev libx11-dev libxerces-c-dev libzipios++-dev occt-draw pyside2-tools python3-dev python3-matplotlib python3-packaging python3-pivy python3-ply python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-pyside2.qtnetwork python3-pyside2.qtwebengine python3-pyside2.qtwebenginecore python3-pyside2.qtwebenginewidgets python3-pyside2.qtwebchannel python3-markdown python3-git python3-pyside2uic qtbase5-dev qttools5-dev swig libyaml-cpp-dev
NOTA: Em algumas versões do Ubuntu e algumas versões do Qt, você receberá um erro informando que python3-pyside2uic não pode ser encontrado - nesses sistemas você pode omiti-lo com segurança. No Ubuntu 20.04 você precisará adicionar pyqt5-dev-tools
. Mais informações podem ser encontradas em este fórum de discussão.
Isso não é recomendado para instalações mais recentes, pois tanto o Python 2 quanto o Qt4 são obsoletos.
sudo apt install cmake debhelper dh-exec dh-python libboost-date-time-dev libboost-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-thread-dev libcoin80-dev libeigen3-dev libgts-bin libgts-dev libkdtree++-dev libmedc-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-visualization-dev libopencv-dev libproj-dev libpyside-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev libshiboken-dev libspnav-dev libvtk6-dev libx11-dev libxerces-c-dev libzipios++-dev lsb-release occt-draw pyside-tools python-dev python-matplotlib python-pivy python-ply swig
Usuários do Ubuntu 16.04, consulte também a discussão sobre compilação no fórum: Compilar no Linux (Kubuntu): CMake não consegue encontrar VTK.
Follow the same steps as in Debian and Ubuntu.
There are problems reported when trying to compile in Raspberry PI OS 32-bit with Python 3 and Qt5, but the combination Python 3 and Qt4 seems to work for older versions of FreeCAD (with minor issues).
For newer versions of FreeCAD (>= 0.20) the compilation with Py3/Qt5 is successful if the operating system installed is Raspberry Pi OS 64-bit or Ubuntu 20.04.
Due to different issues with Qt, in Ubuntu 20.04 the normal PySide tools won't be found.
E: Unable to locate package python3-pyside2uic
In this case, we can install the packages from PyQt and create symbolic links to the needed tools.
sudo apt-get install pyqt5-dev
sudo apt-get install pyqt5-dev-tools
cd /usr/bin/
ln -s pyrcc5 pyside2-rcc
ln -s pyuic5 pyside2-uic
Now compilation may proceed.
cd build/
cmake ../ -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DUSE_PYBIND11=ON
make -j2
The -j
option to make
should not be more than 3 because the Raspberry Pi has limited memory. It will take several hours to compile, so it is better to do it overnight.
More information, FreeCAD and Raspberry Pi 4.
There is a bug in cmake distributed by Fedora 34/35 which results in cmake failing to find the opencascade libraries. This can easily be fixed by making one minor change to the top level cmake file of opencascade installed on Fedora. Details here: https://bugzilla.redhat.com/show_bug.cgi?id=2083568.
Near the top of the file OpenCASCADEConfig.cmake, change the following line to use REAL_PATH()
. This fixes a bug introduced by the use of a symlink from /lib
to /usr/lib
of Fedora, which causes cmake to fail.
This file is usually installed in /usr/lib64/cmake/opencascade/OpenCASCADEConfig.cmake.
get_filename_component (OpenCASCADE_INSTALL_PREFIX "${OpenCASCADE_INSTALL_PREFIX}" PATH)
change this to:
file (REAL_PATH ${OpenCASCADE_INSTALL_PREFIX} OpenCASCADE_INSTALL_PREFIX)
This trivial change needs to be made inside the build directory once cmake has been run and failed. Re-running cmake will then correctly detect the OCCT libraries in the normal way.
Now install Python 3.11. This includes a notable change in how Python initializes when running a program. As a result FreeCAD fails to find OpenCamLib, meaning 3D Surface and Waterline are not available in the CAM Workbench. This was fixed in the master branch on 20th Mar 2024 (Pull request #13059).
You need the following packages:
gcc-c++
(or possibly another C++ compiler?)cmake
doxygen
swig
gettext
dos2unix
desktop-file-utils
libXmu-devel
freeimage-devel
mesa-libGLU-devel
opencascade-devel
openmpi-devel
python3
python3-devel
python3-pyside2
python3-pyside2-devel
pyside2-tools
boost-devel
tbb-devel
eigen3-devel
qt-devel
qt5-qtwebengine-devel
qt5-qtxmlpatterns
qt5-qtxmlpatterns-devel
qt5-qtsvg-devel
qt5-qttools-static
ode-devel
xerces-c
xerces-c-devel
opencv-devel
smesh-devel
Coin3
Coin3-devel
yaml-cpp
(April 2021, Coin4 and Coin4-devel are available) (if coin2 is the latest available for your version of Fedora, use packages from http://www.zultron.com/rpm-repo/)
SoQt-devel
freetype
freetype-devel
vtk
vtk-devel
med
med-devel
And optionally:
libspnav-devel
(for 3Dconnexion devices support like the Space Navigator or Space Pilot)python3-pivy
(https://bugzilla.redhat.com/show_bug.cgi?id=458975 Pivy is not mandatory but needed for the Draft Workbench)python3-markdown
(for the Addon Manager to display native markdown)python3-GitPython
(for the Addon Manager to use git to checkout and update workbenches and macros)To install all dependencies at once (tested on fedora 36 and 37):
sudo dnf install gcc-c++ cmake doxygen swig gettext dos2unix desktop-file-utils libXmu-devel freeimage-devel mesa-libGLU-devel opencascade-devel openmpi-devel python3 python3-devel python3-pyside2 python3-pyside2-devel pyside2-tools boost-devel tbb-devel eigen3-devel qt-devel qt5-qtwebengine-devel qt5-qtxmlpatterns qt5-qtxmlpatterns-devel qt5-qtsvg-devel qt5-qttools-static ode-devel xerces-c xerces-c-devel opencv-devel smesh-devel Coin3 Coin3-devel SoQt-devel freetype freetype-devel vtk vtk-devel med med-devel libspnav-devel python3-pivy python3-markdown python3-GitPython yaml-cpp
Easiest way to check which packages are needed to compile FreeCAD is to check via portage:
emerge -pv freecad
This should give a nice list of extra packages that you need installed on your system.
If FreeCAD is not available on portage, it is available on the waebbl overlay. The issue tracker on the waebbl overlay Github may help guide through some issues you may come across. The overlay provides freecad-9999, which you can choose to compile, or simply use to get the dependencies.
layman -a waebbl
The following commands will install the packages required for building FreeCAD with Qt5 and Python 3.
zypper in --no-recommends -t pattern devel_C_C++ devel_qt5
zypper in libqt5-qtbase-devel libqt5-qtsvg-devel libqt5-qttools-devel boost-devel swig libboost_program_options-devel libboost_mpi_python3-devel libboost_system-devel libboost_program_options-devel libboost_regex-devel libboost_python3-devel libboost_thread-devel libboost_system-devel libboost_headers-devel libboost_graph-devel python3 python3-devel python3-matplotlib python3-matplotlib-qt5 python3-pyside2 python3-pyside2-devel python3-pivy gcc gcc-fortran cmake occt-devel libXi-devel opencv-devel libxerces-c-devel Coin-devel SoQt-devel freetype2-devel eigen3-devel libode6 vtk-devel libmed-devel hdf5-openmpi-devel openmpi2-devel netgen-devel freeglut-devel libspnav-devel f2c doxygen dos2unix glew-devel yaml-cpp
The following command will install Qt Creator and the GNU Project Debugger.
zypper in libqt5-creator gdb
If any packages are missing, then you can check the Tumbleweed "FreeCAD.spec" file on the Open Build Service.
Also, check to see if there are any patches you need to apply (such as 0001-find-openmpi2-include-files.patch).
If there is a difference between the available packages on Tumbleweed and Leap, then you can read the Leap "FreeCAD.spec" file on the Open Build Service to determine the required packages.
Você precisará das seguintes bibliotecas dos repositórios oficiais:
boost
cmake
coin
curl
desktop-file-utils
eigen
gcc-fortran
git
glew
hicolor-icon-theme
jsoncpp
libspnav
med
nlohmann-json
opencascade
pyside2-tools
pyside2
python-matplotlib
python-netcdf4
python-packaging
python-pivy
qt5-svg
qt5-tools
qt5-webengine
shared-mime-info
shiboken2
swig
utf8cpp
verdict
xerces-c
yaml-cpp
sudo pacman -S --needed --asdeps boost cmake coin curl desktop-file-utils eigen gcc-fortran git glew hicolor-icon-theme jsoncpp libspnav med nlohmann-json opencascade python-matplotlib python-netcdf4 python-packaging python-pivy qt5-svg qt5-tools qt5-webengine shared-mime-info swig utf8cpp xerces-c yaml-cpp
FreeCAD currently uses QT5. This requires packages which have been moved from the official repositories to the AUR. These packages will be compiled by source and may take a long time depending on the available hardware.
yay -S --needed --asdeps pyside2 pyside2-tools shiboken2
Em outras distribuições, temos muito poucos comentários dos usuários, portanto, pode ser mais difícil encontrar os pacotes necessários.
Tente primeiro localizar as bibliotecas necessárias mencionadas em bibliotecas de terceiros em seu gerenciador de pacotes. Cuidado, pois alguns deles podem ter um nome de pacote ligeiramente diferente; procure por name
, mas também libname
, name-dev
, name-devel
e similares. Se isso não for possível, tente compilar você mesmo essas bibliotecas.
O FreeCAD requer a versão do compilador GNU g++ igual ou superior a 3.0.0, já que o FreeCAD é escrito principalmente em C++. Durante a compilação alguns scripts Python são executados, portanto o interpretador Python deve funcionar corretamente. Para evitar problemas de vinculador, também é uma boa ideia ter os caminhos da biblioteca na variável LD_LIBRARY_PATH
ou no arquivo ld.so.conf
. Isso já é feito em distribuições Linux modernas, mas pode precisar ser configurado em distribuições mais antigas.
Pivy (wrappers Python para Coin3d) não é necessário para construir o FreeCAD ou para iniciá-lo, mas é necessário como uma dependência de tempo de execução pela bancadas de trabalho Draft. Se você não for usar este ambiente de trabalho, não precisará do Pivy. No entanto, observe que o Draft Workbench é usado internamente por outras bancadas de trabalho, como Arch e BIM, então o Pivy precisa ser instalado para usar essas bancadas de trabalho também.
Em novembro de 2015, a versão obsoleta do Pivy incluída no código-fonte do FreeCAD não será mais compilada em muitos sistemas. Isso não é um grande problema, pois normalmente você deve obter o Pivy no gerenciador de pacotes da sua distribuição; se você não conseguir encontrar o Pivy, talvez seja necessário compilá-lo sozinho, consulte Instruções de compilação do Pivy.
Para solucionar falhas no FreeCAD, é útil ter os símbolos de depuração de bibliotecas de dependência importantes, como o Qt. Para isso, tente instalar os pacotes de dependência que terminam com -dbg
, -dbgsym
, -debuginfo
ou similar, dependendo da sua distribuição Linux.
Para Ubuntu, pode ser necessário habilitar repositórios especiais para poder ver e instalar esses pacotes de depuração com o gerenciador de pacotes. Consulte Pacotes de símbolos de depuração para obter mais informações.
O FreeCAD usa o CMake como seu principal sistema de compilação, pois ele está disponível em todos os principais sistemas operacionais. A compilação com o CMake é geralmente muito simples e ocorre em duas etapas.
Makefile
que é configurado para a segunda etapa. O FreeCAD tem várias opções de configuração para escolher, mas ele vem com padrões sensatos. Algumas alternativas estão detalhadas abaixo.make
, que gera os executáveis do FreeCAD.Como o FreeCAD é um aplicativo grande, a compilação de todo o código-fonte pode levar de 10 minutos a uma hora, dependendo da sua CPU e do número de núcleos de CPU usados para a compilação.
Para compilar, basta criar um diretório de compilação, build
. Em seguida, a partir desse diretório de compilação, aponte cmake
para a pasta de código-fonte correta. Você também pode usar cmake-gui
ou ccmake
em vez de cmake
nas instruções abaixo. Quando cmake
terminar de configurar o ambiente, use make
para iniciar a compilação.
# from your freecad-source folder:
mkdir build
cd build
cmake ../
make -j$(nproc --ignore=2)
A opção -j
do make
controla quantos trabalhos (arquivos) são compilados em paralelo. O programa nproc
imprime o número de núcleos de CPU em seu sistema; ao usá-lo juntamente com a opção -j
, você pode optar por processar tantos arquivos quantos forem os núcleos existentes, a fim de acelerar a compilação geral do programa. No exemplo acima, ele usará todos os núcleos do sistema, exceto dois; isso manterá o computador responsivo para outros usos enquanto a compilação é feita em segundo plano. O executável do FreeCAD será exibido no diretório build/bin
. Consulte também Compilação (Acelerada) para melhorar a velocidade de compilação.
Se você já fez uma compilação antes e ficou preso em uma dependência que não é reconhecida ou que parece não poder ser resolvida, tente o seguinte:
A GNU libc 2.34 introduz uma alteração na biblioteca que pode fazer com que as compilações em alguns sistemas Linux falhem com um erro do tipo:
No rule to make target '/usr/lib/x86_64-linux-gnu/libdl.so
Para resolver isso, um link simbólico deve ser criado manualmente a partir do libdl.so.* instalado no sistema (agora vazio) para o local em que o compilador diz que está procurando o arquivo. Por exemplo (se a cópia atual instalada do libdl.so em seu sistema for /usr/lib/x86_64-linux-gnu/libdl.so.2):
sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so
Adapte o comando à estrutura do seu sistema procurando por libdl.so* e vinculando-o ao local apropriado.
Se você executou acidentalmente uma compilação dentro do diretório do código-fonte ou adicionou arquivos estranhos e deseja restaurar o conteúdo apenas para o código-fonte original, execute as etapas a seguir.
> .gitignore
git clean -df
git reset --hard HEAD
A primeira linha limpa o arquivo .gitignore
. Isso garante que os comandos clean e reset a seguir afetarão tudo no diretório e não ignorarão os itens que correspondem às expressões em .gitignore
. A segunda linha exclui todos os arquivos e diretórios que não são rastreados pelo repositório git; em seguida, o último comando redefinirá todas as alterações nos arquivos rastreados, incluindo o primeiro comando que limpou o arquivo .gitignore
.
Se você não limpar o diretório de origem, as execuções subsequentes de cmake
poderão não capturar novas opções para o sistema se o código for alterado.
Ao passar diferentes opções para cmake
, você pode alterar a forma como o FreeCAD é compilado. A sintaxe é a seguinte.
cmake -D <var>:<type>=<value> $SOURCE_DIR
Onde $SOURCE_DIR
é o diretório que contém o código-fonte. O <type>
pode ser omitido na maioria dos casos. O espaço após a opção D
também pode ser omitido.
Por exemplo, para evitar a criação do Bancada de trabalho FEM:
cmake -D BUILD_FEM:BOOL=OFF ../
cmake -DBUILD_FEM=OFF ../
Todas as variáveis possíveis estão listadas no arquivo InitializeFreeCADBuildOptions.cmake
, localizado no diretório cMake/FreeCAD_Helpers
. Nesse arquivo, procure a palavra option
para acessar as variáveis que podem ser definidas e ver seus valores padrão.
# ============================================================================== # ================= All the options for the build process ================= # ============================================================================== option(BUILD_FORCE_DIRECTORY "The build directory must be different to the source directory." OFF) option(BUILD_GUI "Build FreeCAD Gui. Otherwise you have only the command line and the Python import module." ON) option(FREECAD_USE_EXTERNAL_ZIPIOS "Use system installed zipios++ instead of the bundled." OFF) option(FREECAD_USE_EXTERNAL_SMESH "Use system installed smesh instead of the bundled." OFF) ...
Como alternativa, use o comando cmake -LH
para listar a configuração atual e, portanto, todas as variáveis que podem ser alteradas. Você também pode instalar e usar cmake-gui
para iniciar uma interface gráfica que mostre todas as variáveis que podem ser modificadas. Nas próximas seções, listamos algumas das opções mais relevantes que você pode querer usar.
Crie uma compilação Debug
para solucionar falhas no FreeCAD. Tenha em atenção que com esta construção o Sketcher fica muito lento com esboços complexos.
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Debug ../
Crie uma compilação Release
para testar o código que não trava. Uma compilação Release
será executada muito mais rapidamente do que uma compilação Debug
.
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Release ../
O suporte ao Python 2 e ao Qt4 foi removido no FreeCAD 0.20 e não é necessário habilitar explicitamente o Qt5 e o Python 3 se estiver compilando as versões mais recentes. O suporte ao Qt6 está em desenvolvimento e ainda não funciona. A menos que planeje ajudar no esforço de migração para o Qt6, FREECAD_QT_VERSION deve ser deixado em "Auto" (o padrão) ou explicitamente definido como "5".
Para 0.20 e 0.21_dev:
cmake ../
Observe que, ao alternar entre as compilações 0.20 e 0.21_dev, pode ser necessário excluir o CMakeCache.txt antes de executar o cmake.
Se o executável python
padrão em seu sistema for um link simbólico para Python 2, cmake
tentará configurar o FreeCAD para esta versão. Você deve então escolher outra versão do Python, fornecendo o caminho para um executável específico:
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 ../
Se isso não funcionar, talvez seja necessário definir variáveis adicionais apontando para as bibliotecas Python desejadas e incluir diretórios:
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3.6 \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6m \
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so \
-DPYTHON_PACKAGES_PATH=/usr/lib/python3.6/site-packages/ \
../
É possível ter várias versões independentes do Python no mesmo sistema, portanto, os locais e os números de versão dos seus arquivos Python dependerão da sua distribuição Linux específica. Use python3 -V
para exibir a versão do Python que você está usando atualmente; apenas os dois primeiros números são necessários; por exemplo, se o resultado for Python 3.6.8
, você precisará especificar os diretórios relacionados à versão 3.6. Se você não conhece os diretórios corretos, tente procurá-los com o comando locate
.
locate python3.6
Você pode usar python3 -m site
em um terminal para determinar o diretório site-packages
, ou dist-packages
para sistemas Debian.
Alguns componentes do FreeCAD, como o PySide, tentam detectar automaticamente a versão mais recente do Python instalada em seu sistema, o que pode falhar se ela for diferente da que você inseriu acima. Adicionar a seguinte opção do cMake pode resolver o problema:
-DPython3_FIND_STRATEGY=LOCATION
1. Inicie o Qt Creator.
2. Clique em Abrir Projeto.
3. Navegue até o diretório onde está o código-fonte, freecad-source/
, e escolha o arquivo CMakeLists.txt
mais alto.
4. Ao selecionar o arquivo, ele executará automaticamente cmake
nele, mas poderá falhar se as opções apropriadas não estiverem definidas corretamente.
5. Vá para Projetos → Construir e Executar → Kit Importado → Construir → Configurações de Construção → CMake. Defina o diretório de compilação apropriado, build/
.
6. Defina as variáveis apropriadas na caixa de diálogo Key-Value, dos tipos String
e Bool
.
PYTHON_EXECUTABLE=/usr/bin/python3
7. Caso as variáveis não carreguem o projeto corretamente, talvez seja necessário ir em Projetos → Gerenciar Kits → Kits → Padrão (ou Kit Importado ou similar) → Configuração do CMake. Em seguida, pressione Change e adicione a configuração apropriada conforme descrito acima. Talvez seja necessário adicionar mais variáveis sobre os caminhos do Python, se o sistema Python não for encontrado.
PYTHON_EXECUTABLE:STRING=/usr/bin/python3.7
PYTHON_INCLUDE_DIR:STRING=/usr/include/python3.7m
PYTHON_LIBRARY:STRING=/usr/lib/x86_64-linux-gnu/libpython3.7m.so
PYTHON_PACKAGES_PATH:STRING=/usr/lib/python3.7/site-packages
7.1. Pressione Aplicar e depois OK.
7.2. Certifique-se de que o resto das opções estejam definidas corretamente, por exemplo, Qt version deve ser uma versão atual instalada no sistema, como Qt 5.9.5 in PATH (qt5)
.
Pressione Apply e depois OK para fechar a configuração.
O programa cmake
deverá ser executado automaticamente novamente e deverá preencher toda a caixa de diálogo Key-Value com todas as variáveis que podem ser configuradas.
8. Vá para Projects → Build & Run → Imported Kit → Run → Run Settings → Run → Run Configuration e escolha FreeCADMain
para compilar a versão gráfica do FreeCAD, ou FreeCADMainCMD
para compilar apenas a versão da linha de comando.
9. Por fim, vá ao menu Build → Build Project "FreeCAD". Se esta for uma nova compilação, deverá levar vários minutos, inclusive horas, dependendo do número de processadores disponíveis.
Se você deseja desenvolver código Qt para FreeCAD, você precisará do plugin Qt Designer que fornece todos os widgets personalizados do FreeCAD.
Entre em um diretório auxiliar do código fonte e execute qmake
com o arquivo de projeto indicado para criar um Makefile
; então execute make
para compilar o plugin.
cd freecad-source/src/Tools/plugins/widget
qmake plugin.pro
make
Se você estiver compilando para Qt5, certifique-se de que o binário qmake
seja o desta versão, para que o Makefile
resultante contenha as informações necessárias para Qt5.
cd freecad-source/src/Tools/plugins/widget
$QT_DIR/bin/qmake plugin.pro
make
onde $QT_DIR
é o diretório que armazena bibliotecas binárias Qt, por exemplo, /usr/lib/x86_64-linux-gnu/qt5
.
A biblioteca criada é libFreeCAD_widgets.so
, que precisa ser copiada para $QT_DIR/plugins/designer
.
sudo cp libFreeCAD_widgets.so $QT_DIR/plugins/designer
Anteriormente, uma versão do Pivy era incluída no código-fonte do FreeCAD (interno). Se você quisesse usar a cópia do Pivy do seu sistema (externa), você precisava usar -DFREECAD_USE_EXTERNAL_PIVY=1
.
O uso do Pivy externo tornou-se o padrão durante o desenvolvimento do FreeCAD 0.16, portanto, essa opção não precisa mais ser definida manualmente.
Se você tiver o Doxygen instalado, poderá criar a documentação do código-fonte. Consulte documentação fonte para obter instruções.
O código-fonte do FreeCAD é muito extenso e, com o CMake, é possível configurar muitas opções. Aprender a usar o CMake por completo pode ser útil para escolher as opções certas para suas necessidades específicas.
Se você planeja construir um pacote Debian a partir dos fontes, você precisa instalar alguns pacotes primeiro:
sudo apt install dh-make devscripts lintian
Vá para o diretório FreeCAD e chame
debuild
Depois que o pacote for compilado, você pode usar lintian
para verificar se o pacote contém erros
lintian freecad-package.deb
O script Debian checkinstall
permite criar um pacote *.deb que pode ser instalado e removido com os comandos padrão dpkg
. Pode ser necessário instalá-lo primeiro (no Ubuntu, use sudo apt install checkinstall
). É interativo e solicita as informações necessárias, fornecendo padrões úteis. Durante o processo o pacote é instalado e um arquivo *.deb e um arquivo de backup são criados.
É uma boa ideia definir um nome e uma breve descrição para o pacote. O nome deve ser digitado para desinstalá-lo novamente e a descrição será listada por dpkg -l
. O nome padrão "build" não é muito informativo.
Exemplo:
cd freecad-source/build
cmake ..
make
sudo checkinstall # e.g. name=freecad-test1
O resultado é um arquivo *.deb na pasta build. checkinstall
instalará a compilação por padrão. É assim que você pode instalá-lo ou desinstalá-lo:
cd freecad-source/build
ls | grep freecad
freecad-test1_20220814-1_amd64.deb
sudo dpkg -i freecad-test1_20220814-1_amd64.deb # install
dkpg -l | grep freecad # find by name
sudo dpkg -r freecad-test1 # uninstall by name
O sistema CMake permite que você atualize o código-fonte de forma inteligente e recompile apenas o que foi alterado, tornando as compilações subsequentes mais rápidas.
Vá até o local onde o código-fonte do FreeCAD foi baixado pela primeira vez e extraia o novo código:
cd freecad-source
git pull
Em seguida, vá para o diretório de compilação onde o código foi compilado inicialmente e execute cmake
especificando o diretório atual (indicado por um ponto); depois, acione a recompilação com make
.
cd build
cmake ../
make -j$(nproc --ignore=2)
Caso o código-fonte compilado tenha sido instalado com sudo make install
(para Debian), os arquivos foram copiados para a pasta /usr/local em várias subpastas. Para a desinstalação, o arquivo install_manifest.txt pode ser usado. Ele foi criado na pasta de compilação durante a compilação e contém todos os arquivos instalados. Enquanto esse arquivo existir, a instalação poderá ser desinstalada.
cd freecad-source/build
xargs sudo rm < install_manifest.txt
Ao compilar o FreeCAD para 64 bits, há um problema conhecido com o pacote OpenCASCADE (OCCT) de 64 bits. Para que o FreeCAD seja executado corretamente, talvez seja necessário executar o script configure
e definir CXXFLAGS
adicionais:
./configure CXXFLAGS="-D_OCC64"
Para sistemas baseados no Debian, essa opção não é necessária quando se usa os pacotes OpenCASCADE pré-construídos, pois eles definem internamente o CXXFLAGS
adequado.
Aqui está tudo o que você precisa para uma compilação completa do FreeCAD. É uma abordagem de script único e funciona em uma distribuição Linux recém-instalada. Os comandos solicitarão a senha de root para a instalação de pacotes e novos repositórios on-line. Esses scripts devem ser executados em versões de 32 e 64 bits. Eles foram escritos para diferentes versões, mas também podem ser executados em uma versão posterior, com ou sem grandes alterações.
Se você tiver um script desse tipo para sua distribuição preferida, discuta-o no FreeCAD forum para que possamos incorporá-lo.
Esses scripts fornecem uma maneira confiável de instalar o conjunto correto de dependências necessárias para compilar e executar o FreeCAD no Ubuntu. Eles usam os arquivos de pacotes pessoais do Ubuntu (PPA) e devem funcionar em qualquer versão do Ubuntu visada pelo PPA. O freecad-daily PPA tem como alvo as versões recentes do Ubuntu, enquanto o freecad-stable PPA tem como alvo as versões oficialmente suportadas do Ubuntu.
Esse script instala o snapshot compilado diariamente do FreeCAD e suas dependências. Ele adiciona o repositório diário, obtém as dependências para compilar essa versão e instala os pacotes necessários. Em seguida, ele extrai o código-fonte para um diretório específico, cria um diretório de compilação e faz alterações nele, configura o ambiente de compilação com cmake
e, por fim, compila o programa inteiro com make
. Salve o script em um arquivo, torne-o executável e execute-o, mas não use sudo
; os privilégios de superusuário serão solicitados apenas para comandos selecionados.
#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-daily && sudo apt-get update
sudo apt-get build-dep freecad-daily
sudo apt-get install freecad-daily
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad-source
mkdir freecad-source/build
cd freecad-source/build
cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 -DFREECAD_USE_PYBIND11=ON ../
make -j$(nproc --ignore=2)
Se desejar, você pode desinstalar a versão pré-compilada do FreeCAD (freecad-daily
) e deixar as dependências no lugar; no entanto, deixar esse pacote instalado permitirá que o gerenciador de pacotes mantenha suas dependências atualizadas também; isso é útil principalmente se você pretende acompanhar o desenvolvimento do FreeCAD e atualizar e compilar constantemente os códigos-fonte do repositório Git.
O script anterior pressupõe que você deseja compilar a versão mais recente do FreeCAD e, portanto, está usando o repositório "daily" para obter as dependências. No entanto, em vez disso, você pode obter as dependências de compilação da versão "estável" do seu lançamento atual do Ubuntu. Se esse for o caso, substitua a parte superior do script anterior pelas instruções a seguir. Para o Ubuntu 12.04, omita --enable-source
do comando.
#!/bin/sh
sudo add-apt-repository --enable-source ppa:freecad-maintainers/freecad-stable && sudo apt-get update
sudo apt-get build-dep freecad
sudo apt-get install libqt5xmlpatterns5-dev # Needed for 0.20; should go away on next packaging update
sudo apt-get install freecad
Quando você instalar o pacote freecad
do repositório freecad-stable
, ele substituirá o executável do FreeCAD disponível no repositório Universe Ubuntu. O nome do executável será simplesmente freecad
, e não freecad-stable
.
Nenhum repositório externo é necessário para compilar o FreeCAD. No entanto, existe uma incompatibilidade com python3-devel que precisa ser removida. FreeCAD pode ser compilado a partir do GIT
# install needed packages for development
sudo zypper install gcc cmake OpenCASCADE-devel libXerces-c-devel \
python-devel libqt4-devel python-qt4 Coin-devel SoQt-devel boost-devel \
libode-devel libQtWebKit-devel libeigen3-devel gcc-fortran git swig
# create new dir, and go into it
mkdir FreeCAD-Compiled
cd FreeCAD-Compiled
# get the source
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git free-cad
# Now you will have a subfolder in this location called free-cad. It contains the source
# make another dir for compilation, and go into it
mkdir FreeCAD-Build1
cd FreeCAD-Build1
# build configuration
cmake ../free-cad
# build FreeCAD
make
# test FreeCAD
cd bin
./FreeCAD -t 0
Como você está usando o git, da próxima vez que desejar compilar você não precisa clonar tudo, apenas extraia do git e compile mais uma vez
# go into free-cad dir created earlier
cd free-cad
# pull
git pull
# get back to previous dir
cd ..
# Now repeat last few steps from before.
# make another dir for compilation, and go into it
mkdir FreeCAD-Build2
cd FreeCAD-Build2
# build configuration
cmake ../free-cad
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
# test FreeCAD
cd bin
./FreeCAD -t 0
# get the needed tools and libs
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.5-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake gfortran
# checkout the latest source
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git freecad
# go to source dir
cd freecad
# build configuration
cmake .
# build FreeCAD
# Note: to speed up build use all CPU cores: make -j$(nproc)
make
# test FreeCAD
cd bin
./FreeCAD -t 0
Postado pelo usuário [PrzemoF] no fórum.
#!/bin/bash
ARCH=$(arch)
MAIN_DIR=FreeCAD
BUILD_DIR=build
#FEDORA_VERSION=27
#FEDORA_VERSION=28
FEDORA_VERSION=29
PACKAGES="gcc cmake gcc-c++ boost-devel zlib-devel swig eigen3 qt-devel \
shiboken shiboken-devel pyside-tools python-pyside python-pyside-devel xerces-c \
xerces-c-devel OCE-devel smesh graphviz python-pivy python-matplotlib tbb-devel \
freeimage-devel Coin3 Coin3-devel med-devel vtk-devel"
FEDORA_29_PACKAGES="boost-python2 boost-python3 boost-python2-devel boost-python3-devel"
if [ "$FEDORA_VERSION" = "29" ]; then
PACKAGES="$PACKAGES $FEDORA_29_PACKAGES"
fi
echo "Installing packages required to build FreeCAD"
sudo dnf -y install $PACKAGES
cd ~
mkdir $MAIN_DIR || { echo "~/$MAIN_DIR already exist. Quitting.."; exit; }
cd $MAIN_DIR
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
mkdir $BUILD_DIR || { echo "~/$BUILD_DIR already exist. Quitting.."; exit; }
cd $BUILD_DIR
cmake ../FreeCAD
make -j$(nproc)
O Arch User Repository (AUR) é uma coleção de receitas criadas por usuários para criar pacotes que não são oficialmente suportados pelos mantenedores da distribuição/comunidade. Em geral, elas são seguras. Você pode ver quem mantém o pacote e por quanto tempo o fez. Recomenda-se verificar os arquivos de construção. Também há softwares de código-fonte não aberto disponíveis nessa área, mesmo que sejam mantidos pela empresa proprietária oficial.
Pré-requisito: git
Etapas :
mkdir git
. Opcionalmente, altere o diretório, por exemplo, cd git
.git clone https://aur.archlinux.org/freecad-git.git
cd freecad-git
makepkg -s
. O sinalizador -s ou --syncdeps também instalará as dependências necessárias.makepkg --install
ou clique duas vezes no pkgname-pkgver.pkg.tar.xz em seu navegador de arquivos.Para atualizar o FreeCAD para a versão mais recente, basta repetir a partir da etapa 3. Atualize o repositório AUR quando houver alguma alteração significativa na receita ou novos recursos usando git checkout -f
dentro da pasta.